package com.yanqu.road.entity.activity.gourdchild;

import com.yanqu.road.entity.activity.ActivityInfo;
import com.yanqu.road.entity.activity.gourdchild.config.*;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

public class GourdChildConfig {

    private ActivityInfo activityInfo;

    //关卡配置
    private Map<Integer, GourdLevelInfo> levelInfoMap = new ConcurrentHashMap<>();
    //关卡配置
    private List<GourdLevelInfo> levelInfoList = new ArrayList<>();

    GourdLevelInfo startLevel;

    GourdLevelInfo lastLevel;

    //图鉴配置
    private Map<Integer, GourdLevelBookInfo> bookInfoMap = new ConcurrentHashMap<>();

    //彩莲配置
    private Map<Integer, GourdLevelLotusInfo> lotusInfoMap = new ConcurrentHashMap<>();

    private int energyRecItemId;    // 体力恢复道具ID
    private int maxEnergy;          // 最大体力
    private int initEnergy;         // 初始体力
    private long energyRecTime;     // 体力恢复时间，秒
    private int energyRecCount;     // 体力恢复数量

    private int scoreItemId;        // 积分道具ID

    private int defaultUnitNum;     // 进入关卡初始单位数

    private String mountainConsume;                    //葫芦镇妖灵山抽取消耗
    private List<Integer> mountainLuckyParam;          //葫芦镇妖灵山前n次抽盲盒，活动共享m*服务器数量个隐藏款；抽取的概率千分比
    private int hideBoxCount;                          //m*服务器数量
    private List<Integer> mountainAdditionParam;       //葫芦镇妖灵山累计抽取m次后，每次抽取增加权重
    //private String mountainItemParam;                  //葫芦镇妖灵山盲盒奖励，道具ID;权重;是否为大奖
    private List<GourdMountainItem> mountainItemList;

    //private String mountainRewardRepeatControl;        //葫芦镇妖灵山保底次数，4;20 代表当前抽奖达到20次时，若总获取低于4个不重复的，则下次一定获得新奖励
    private List<GourdMountainControl> controlList;

    private int mountainNoticeCount;    //葫芦镇妖灵山公告数量

    private Map<Integer, Integer> damageParam;            //葫芦镇伤害计算参数(暂定)

    public ActivityInfo getActivityInfo() {
        return activityInfo;
    }

    public void setActivityInfo(ActivityInfo activityInfo) {
        this.activityInfo = activityInfo;
    }

    public Map<Integer, GourdLevelInfo> getLevelInfoMap() {
        return levelInfoMap;
    }

    public void setLevelInfoMap(Map<Integer, GourdLevelInfo> levelInfoMap) {
        this.levelInfoMap = levelInfoMap;
    }

    public List<GourdLevelInfo> getLevelInfoList() {
        return levelInfoList;
    }

    public void setLevelInfoList(List<GourdLevelInfo> levelInfoList) {
        this.levelInfoList = levelInfoList;
    }

    public Map<Integer, GourdLevelBookInfo> getBookInfoMap() {
        return bookInfoMap;
    }

    public void setBookInfoMap(Map<Integer, GourdLevelBookInfo> bookInfoMap) {
        this.bookInfoMap = bookInfoMap;
    }

    public Map<Integer, GourdLevelLotusInfo> getLotusInfoMap() {
        return lotusInfoMap;
    }

    public void setLotusInfoMap(Map<Integer, GourdLevelLotusInfo> lotusInfoMap) {
        this.lotusInfoMap = lotusInfoMap;
    }

    public int getEnergyRecItemId() {
        return energyRecItemId;
    }

    public void setEnergyRecItemId(int energyRecItemId) {
        this.energyRecItemId = energyRecItemId;
    }

    public int getMaxEnergy() {
        return maxEnergy;
    }

    public void setMaxEnergy(int maxEnergy) {
        this.maxEnergy = maxEnergy;
    }

    public long getEnergyRecTime() {
        return energyRecTime;
    }

    public void setEnergyRecTime(long energyRecTime) {
        this.energyRecTime = energyRecTime;
    }

    public int getEnergyRecCount() {
        return energyRecCount;
    }

    public void setEnergyRecCount(int energyRecCount) {
        this.energyRecCount = energyRecCount;
    }


    public int getScoreItemId() {
        return scoreItemId;
    }

    public void setScoreItemId(int scoreItemId) {
        this.scoreItemId = scoreItemId;
    }

    public int getDefaultUnitNum() {
        return defaultUnitNum;
    }

    public void setDefaultUnitNum(int defaultUnitNum) {
        this.defaultUnitNum = defaultUnitNum;
    }

    public String getMountainConsume() {
        return mountainConsume;
    }

    public void setMountainConsume(String mountainConsume) {
        this.mountainConsume = mountainConsume;
    }

    public List<Integer> getMountainLuckyParam() {
        return mountainLuckyParam;
    }

    public void setMountainLuckyParam(List<Integer> mountainLuckyParam) {
        this.mountainLuckyParam = mountainLuckyParam;
    }

    public int getHideBoxCount() {
        return hideBoxCount;
    }

    public void setHideBoxCount(int hideBoxCount) {
        this.hideBoxCount = hideBoxCount;
    }

    public List<Integer> getMountainAdditionParam() {
        return mountainAdditionParam;
    }

    public void setMountainAdditionParam(List<Integer> mountainAdditionParam) {
        this.mountainAdditionParam = mountainAdditionParam;
    }

    public List<GourdMountainItem> getMountainItemList() {
        return mountainItemList;
    }

    public void setMountainItemList(List<GourdMountainItem> mountainItemList) {
        this.mountainItemList = mountainItemList;
    }

    public List<GourdMountainControl> getControlList() {
        return controlList;
    }

    public void setControlList(List<GourdMountainControl> controlList) {
        this.controlList = controlList;
    }

    public int getMountainNoticeCount() {
        return mountainNoticeCount;
    }

    public void setMountainNoticeCount(int mountainNoticeCount) {
        this.mountainNoticeCount = mountainNoticeCount;
    }

    public Map<Integer, Integer> getDamageParam() {
        return damageParam;
    }

    public void setDamageParam(Map<Integer, Integer> damageParam) {
        this.damageParam = damageParam;
    }

    public GourdLevelInfo getStartLevel() {
        return startLevel;
    }

    public void setStartLevel(GourdLevelInfo startLevel) {
        this.startLevel = startLevel;
    }

    public GourdLevelInfo getLastLevel() {
        return lastLevel;
    }

    public void setLastLevel(GourdLevelInfo lastLevel) {
        this.lastLevel = lastLevel;
    }

    public int getActivityId() {
        return activityInfo == null ? 0 : activityInfo.getActivityId();
    }

    public int getInitEnergy() {
        return initEnergy;
    }

    public void setInitEnergy(int initEnergy) {
        this.initEnergy = initEnergy;
    }
}
